
package com.e885.hibernate;

import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 * 有關新增測試資料都要繼承這個 class
 * 
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 * @company E885 Group
 * @copyright Copyright (c) 2001-2008
 */

public abstract class AbstractInsertion
{
	/**
	 * 新增筆數, 預設值為 10
	 */
	protected int insertionNumber = 10;

	public AbstractInsertion()
	{
	}

	/**
	 * 
	 * @param insertionNumber 筆數
	 */
	public AbstractInsertion( int insertionNumber )
	{
		this.insertionNumber = insertionNumber;
	}

	/**
	 * 新增測試資料, 已用 transaction
	 */
	public void insertTestData()
	{
		Session session;
		Transaction tx;
		try
		{
			session = HibernateSessionFactory.getSession();
			tx = session.beginTransaction();

			insertTestData( session );

			tx.commit();
		}
		finally
		{
			HibernateSessionFactory.closeSession();

			tx = null;
			session = null;
		}
	}

	/**
	 * 新增測試資料, 內部不使用 Transcation
	 * 
	 * @param session
	 */
	public abstract void insertTestData( Session session );

	/**
	 * @return the insertionNumber
	 */
	public int getInsertionNumber()
	{
		return insertionNumber;
	}

	/**
	 * @param insertionNumber the insertionNumber to set
	 */
	public void setInsertionNumber( int insertionNumber )
	{
		this.insertionNumber = insertionNumber;
	}
}
